﻿#define _CRT_SECURE_NO_WARNINGS 1









 
//void test()
//{
//	int i = 0;
//	int* p = (int*)malloc(10 * sizeof(int));
//	if (NULL == p)
//	{
//		perror("malloc");
//	}
//	else
//	{
//		for (i = 0; i < 10; i++)
//		{
//			*(p + i) = i;//当i是10的时候越界访问
//		}
//		free(p);
//		p = NULL;
//	}
//	
//}
//int main()
//{
//	test();
//	return 0;
//}



//int main()
//{
//	int* p = (int*)malloc(sizeof(int) * 5);
//	if (p == NULL)
//	{
//		printf("error\n");
//		return 1;
//	}
//	
//	//使用
//	int i = 0;
//	for (i = 0; i < 5; i++)
//	{
//		*(p + i) = i + 1;
//	}
//
//
//	//将空间调整为40字节
//	int* ptr = (int*)realloc(p, 4000);
//	if (ptr != NULL)
//	{
//		p = ptr;
//		for (; i < 10; i++)
//		{
//			*(p + i) = i + 1;
//		}
//		for (i = 0; i < 10; i++)
//		{
//			printf("%d ", *(p + i));
//		}
//
//		free(p);
//		p = NULL;
//	}
//	else//调整失败情况
//	{
//		perror("realloc");
//
//	}
//
//	return 0;
//}





//enum Color//颜⾊
//{
//	RED=7,
//	GREEN=5,
//	BLUE=9
//};
//
//
//int main()
//{
//	enum Color s = RED;
//	printf("%d\n", s);
//	return 0;
//}




//int main()
//{
//	int* p = (int*)malloc(sizeof(int) * 5);
//	if (p == NULL)
//	{
//		perror("malloc");
//		return 1;
//	}
//	//使用空间
//	int i = 0;
//	for (i = 0; i < 5; i++)
//	{
//		*(p + i) = i + 1;
//	}
//	//打印
//	for (i = 0; i < 5; i++)
//	{
//		printf("%d ", *(p + i));
//	}
//
//	
//	return 0;
//}


//int main()
//{
//	int* p = (int*)malloc(sizeof(int) * 5);
//	if (p == NULL)
//	{
//		perror("malloc");
//		return 1;
//	}
//	//使用空间
//	int i = 0;
//	for (i = 0; i < 5; i++)
//	{
//		*(p + i) = i + 1;
//	}
//	//打印
//	for (i = 0; i < 5; i++)
//	{
//		printf("%d ", *(p + i));
//	}
//	printf("\n");
//	printf("------------------------\n");
//	//将空间调整为40个字节
//	//int* ptr = (int*)realloc(p, 40);
//	int* ptr = (int*)realloc(p, 4000);
//	if (ptr != NULL)
//	{
//		//申请成功
//		p = ptr;
//		//使用空间
//		for (; i < 10; i++)
//		{
//			*(p + i) = i + 1;
//		}
//		//打印
//		for (i = 0; i < 10; i++)
//		{
//			printf("%d ", *(p + i));
//		}
//
//	}
//	else
//	{
//		//调整失败，打印错误信息
//		perror("realloc");
//		free(p);
//		p = NULL;
//	}
//
//	return 0;
//}
//
//#include <stdio.h>
//#include <stdlib.h>
//
//int main()
//{
//	int* p = (int*)malloc(INT_MAX);
//	if (p == NULL)
//	{
//		perror("malloc");
//		return 1;
//	}
//
//	*p = 20;//如果p的值是NULL，就会有问题
//	free(p);
//	return 0;
//}


#include <stdio.h>
#include <stdlib.h>

//int main()
//{
//	int a = 10;
//	int* p = &a;
//	//....
//
//	free(p);//4.3 对非动态开辟内存使用free释放
//	p = NULL;
//
//	return 0;
//}


//void test()
//{
//    int* p = (int*)malloc(100);
//    //....
//    free(p);
//    free(p);//重复释放
//}


//#include <string.h>
//#include <stdio.h>
//
//void GetMemory(char** p)
//{
//    *p = (char*)malloc(100);
//}
//
//void Test(void)
//{
//    char* str = NULL;
//    GetMemory(&str);
//    strcpy(str, "hello world");
//    printf(str);
//    free(str);
//    str = NULL;
//}
//
//int main()
//{
//    Test();
//    return 0;
//}


//#include <string.h>
//#include <stdio.h>
//
//char* GetMemory(char* p)
//{
//    p = (char*)malloc(100);
//    return p;
//}
//
//void Test(void)
//{
//    char* str = NULL;
//    str = GetMemory(str);
//
//    strcpy(str, "hello world");
//    printf(str);
//
//    free(str);
//    str = NULL;
//}
//
//int main()
//{
//    Test();
//    return 0;
//}


#include <string.h>
#include <stdio.h>

//char* GetMemory(void)
//{
//    char p[] = "hello world";
//    return p;
//}
//
//void Test(void)
//{
//    char* str = NULL;
//    str = GetMemory();
//    printf(str);
//}
//
//
//int main()
//{
//    Test();
//    return 0;
//}

//int* test()
//{
//	int n = 10;
//	return &n;
//}
//
//int main()
//{
//	int* p = test();
//	printf("hehe\n");
//
//	printf("%d\n", *p);
//
//	return 0;
//}


//void GetMemory(char** p, int num)
//{
//    *p = (char*)malloc(num);
//}
//
//void Test(void)
//{
//    char* str = NULL;
//    GetMemory(&str, 100);
//
//    strcpy(str, "hello");
//    printf(str);
//    
//    free(str);
//    str = NULL;
//}
//
//int main()
//{
//    Test();
//    return 0;
//}


//void Test(void)
//{
//    char* str = (char*)malloc(100);
//    strcpy(str, "hello");
//   
//
//    if (str != NULL)
//    {
//        strcpy(str, "world");
//        printf(str);
//    }
//
//    free(str);
//    str = NULL;
//}
//
//int main()
//{
//    Test();
//    return 0;
//}




//struct stu
//{
//	int i;
//	char c;
//	int arr[];//柔性数组
//};

//struct Stu
//{
//	int n;
//	int arr[];//柔性数组
//};
//int main()
//{
//	struct Stu s = { 0 };
//	printf("%zd\n", sizeof(s));
//	return 0;
//}

#include <stdio.h>
#include <stdlib.h>

int main()
{
	int*ptr = (int*)(malloc(sizeof(int) * 15));
	int* tmp = ptr;
	if (ptr != NULL)
	{
		//输入值
		int i = 0;
		int j = 0;
		for (i = 0; i < 15; i++)
		{
			scanf("%d", ptr + i);
		}

		//打印
		for (i = 0; i < 3; i++)
		{
			for (j = 0; j < 5; j++)
			{
				printf("%d ", *(ptr + j));
			}
			ptr = ptr + j;
			printf("\n");
		}
	}
	else
	{
		perror("malloc");

	}
	
	free(tmp);
	tmp = NULL;
	return 0;
}